18
תגובות
אני מנסה לגשת למחלקת התחברות אבל שום ערך לא עובד
if (isset ($_POST['submit']))
    {
        $User = new User();
        $User->LogIn($_POST['UserName'], $_POST['Password']);
    }
   
    /*-----------*/
   
    class User
{
    function LogIn($UserName, $Password)
    {
        if (mysql_query ("SELECT * FROM `users` WHERE `UserName` = $UserName AND `Password` = $Password LIMIT 1"))
        {
            print ('Success');
        }
        else
        {
            print ('Try Again');
        }  
    }
}

18 תשובות

avatar ענה soogo ב 02 למאי 2014 #

??

avatar ענה zacharya ב 02 למאי 2014 #

נסה לשנות את זה ל:

public function LogIn($UserName, $Password)

avatar ענה soogo ב 02 למאי 2014 #

לא עזר

avatar ענה OrelBeY ב 02 למאי 2014 #

למה אתה שם גרשים כאלה (`) מסביב לשמות? אני לא חושב שזה צריך להיות שם, וייתכן שזה מה שגורם לבעיה. נסה להשתמש ב-mysql_error כדי לראות אם יש שגיאת MySQL אחרי זה. או אולי יש שגיאת התחברות?

זה כמובן עוד בלי להיכנס לזה שכל הפונקציות שמתחילות ב-mysql_ יצאו מהשפה כך שעכשיו חייבים לעבור ל-MySQLi (מדריך פשוט בגישה פרוצדורלית - לא OOP) או ל-PDO, ובלי להיכנס לחור האבטחה שיש לך כאן (SQL Injection), שאפשר למנוע באמצעות Prepared Statements (חפש בגוגל).

avatar ענה soogo ב 02 למאי 2014 #

אני משתמש בגירסה 5.3 אז אני לא חייב MySQLi
הינה המחלקה החדשה והיא עדיין לא עובדת

class User
{
    public function LogIn($UserName, $Password)
    {
        $sql = mysql_query ("SELECT * FROM users WHERE UserName = $UserName AND Password = $Password LIMIT 1");
        print (mysql_error($sql));
        if ($sql)
        {
            print ('Success');
            print (mysql_error($sql));
        }
        else
        {
            print ('Try Again');
            print (mysql_error($sql));
        }    
    }
}

avatar ענה intval ב 02 למאי 2014 #

מה הכוונה "לא עובדת" ?
המסך שחור ?

avatar ענה soogo ב 02 למאי 2014 #

אני מקבל רק Try Again למרות שאני מזין ערך שקיים במסד

avatar ענה OrelBeY ב 02 למאי 2014 #

איפה ההתחברות לבסיס הנתונים? (שאת זה, אגב, אתה מעביר ל-mysqli_error, ולא את מה שאתה מקבל מהשאילתה.)

avatar ענה soogo ב 02 למאי 2014 #

החיבור נימצא בקובץ שעשיתי לו require

avatar ענה OrelBeY ב 02 למאי 2014 #

למיטב זיכרוני בגישה הפרוצדורלית החיבור מועבר בין הפונקציות בתור resource (המשתנה ששמת אותו בו). למחלקה הזאת אין גישה לשם. הנה שאלה ממש לא מזמן בדיוק על זה.

avatar ענה soogo ב 02 למאי 2014 #

לא הבנתי איך זה קשור אלי

הינה כל הקוד למי שרוצה
http://pastebin.com/szSenafv

avatar ענה OrelBeY ב 02 למאי 2014 #

קשור מאוד. (לפחות לפי איך שזה עובד באחרים. אני לא יודע אם בהרחבה הישנה הזאת זה גם ככה. אם אתה רוצה אתה יכול תמיד לחפש בגוגל.)
תעביר את שורות 2-3 לתוך LogIn(), ותעביר את $ConnectDB ל-mysql_error במקום את $sql.

avatar ענה soogo ב 02 למאי 2014 #

קיבלתי את השגיאה
Unknown column 'shai' in 'where clause'

avatar ענה OrelBeY ב 02 למאי 2014 #

אתה אמור לשים גרשיים מסביב למה שאתה מעביר.

" ... userName = '{$userName}' ... "

אתה בטוח שלמדת MySQL כמו שצריך?

avatar ענה soogo ב 02 למאי 2014 #

באחת התגובות אמרו לי לא לשים גרשיים...
למרות שזה עדיין לא עוזר

avatar ענה OrelBeY ב 02 למאי 2014 #

בזמנו התכוונתי לשם של הטבלה, ולא לשם של העמודות.
תשמע, אין לי מושג. אולי אני אעבור על זה יותר ביסודיות מאוחר יותר, ואולי מישהו אחר יענה לך.
בכל מקרה, כל פעם תסביר בדיוק מה קורה. למשל, "עדיין לא עוזר" - לשגיאה האחרונה או באופן כללי?

avatar ענה soogo ב 02 למאי 2014 #

באופן כללי
אף שורה לא נישלפת כשאני בודק עם print(mysql_num_rows($sql));

avatar ענה yonikal56 ב 03 למאי 2014 #

שכחת לעטוף את הערכים שנכנסים מPHP שהוזנו בגרשיים וב{} ואם אתה עושה שם טבלה ב`` צריך גם את העמדות.